

// Это строгий вариант даёт результаты, совпадающие с Matrix_double_4.m

// Проверка влияния отраженных сигналов
//_______________________________Параметры помех

clear
EA=[10,140;10,140;5, 120;1,30; 3,20;5, 50;3,-60;0,150;0,0;0,-120;10,150;-10,175;0,-30;45,30;45,-30;0,170];

k1=[1:6];
//  k1=1;
EA=EA(k1,:);

//Е0 – вектор заданных значений относительного превышения уровней помех над собственными шумами.
e0=1; // уровень сигнала на выходе приёмника  
// k2=[8,6,6,7,7,8,6,6,7,7,8,6];
// k2=[3*ones(1,6),11*ones(1,6)]; 
k2=k1;
// k2=[7,11*ones(1,11)]; 
if length (k2)~=length(k1),
    error('length (k2) должен быть равен  length(k1)');
end;
E0=[400,400,500,500,80,50,60,500,100,100,0,0,0,0,0];//0.05,
// E0=[1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0];//0.05,
// E0=[0,5,25,50,60,80,100,250,400,0];
E0=E0(k2); 
normE0=norm(E0);
// E0=E0.*exp(%i*pi/4); 


k3=k1;
if length (k3)~=length(k1),
    error('length (k3) должен быть равен  length(k1)');
end;
f0=[20,1,3,5,7,9,10,11,13,14,15,16,17,18,19,20]*1e6;// вектор несущих частот
f0=f0(k3);
B=[10,3,15,0,10,9,10,12,13,15,16,18,20,0,0,0]*1e6;// вектор ширины спекра помех

k4=k1;
if length (k4)~=length(k1),
    error('length (k4) должен быть равен  length(k1)');
end;
B=B(k4);
//_______________________________Параметры помех -- конец

//_________________________ параметры многолучевости

Kmp=[0.125,0.13,0.15,0.2,0.2,0,15,0.3]*2;
// Kmp=0.15*rand(1,8);
EAmp=[0,-130;0,-30;0,170;30,-10;5,120;-20,31;0,75;-30,-90]; 
// Dmp=8*rand(1,8);
ha=5.;
Dmp=[2,8,3,5,2.5,4,10,3];
N_mp=2;

//_______________________________параметры многолучевости-- конец



Na =6;                   // Число периферийных антенн
lambda=0.187; 
// td=1/5000e6;   fd=1/td;    // период тактования 
// td=1/4300e6;   fd=1/td;    // период тактования 
td=1/2150e6;   fd=1/td;    // период тактования 
nu=2^18;                           // длина реализации случайного процесса, из которой выбирается фрагмент диной Nu

Nu=50000;                  // Число выборок в случайной реализации при моделировании

//______________Это вариант для работы с Na=3. Для моделирования его НАДО ПРОСТО разблокировать 
Na=3;
nn=3;               // nn=3...5 - число помех
B=B(1:nn);
f0=f0(1:nn);
E0=E0(1:nn);
EA=EA(1:nn,:);
// __________________________________________
EG=zeros(1,Nu);
ZG=zeros(Na,Nu);
ph=zeros(1,length(E0));
//EG0 и ZG0 – соответственно модели сигналов центральной атенны и вектора сигналов периферийных антенн.
exec('preparationMP.sci');
[EG0,ZG0]=preparationMP(Na,E0,ph,EA,lambda,nu,f0,B,td,Kmp, EAmp, N_mp,Dmp,ha);
   
exec('circshift.sci');
EG=circshift(EG0',50,0)'; //86 МГц
// ZG0(2,:)=circshift(ZG0(3,:)',-10)';
// ZG0(3,:)=circshift(ZG0(2,:)',10)';
// ZG0=circshift(ZG0',-25)';  //Na=1

   
ZG1=ZG0;
ZG2=circshift(ZG0',50,0)';
ZG3=circshift(ZG0',100,0)';
ZG4=circshift(ZG0',150,0)';
ZG5=circshift(ZG0',200,0)';
// ZG6=circshift(ZG0',250,0)';
// ZG7=circshift(ZG0',300,0)';
//__________________________________________________________________________
exec('form_int_1.sci');
[v,i1]=form_int_1(Nu,nu); // изъятие Nu выборок из реализации, состоящей из  nu выборок, получение статистически независимых реализаций из Nu
v=v(1:50:$);
EG_=EG([v]);
Z1=ZG1(:,[v]);                  
Z2=ZG2(:,[v]);    
Z3=ZG3(:,[v]);
Z4=ZG4(:,[v]);   
Z5=ZG5(:,[v]);  



// Здесь оканчивается модель сигналов помех. 
//======================================================================


// МОДЕЛЬ АЛГОРИТМА
Za=[Z1;Z2;Z3;Z4;Z5];

// Za=[Z1;Z2;Z3;Z4];
// Za=[Z2];
// Za=[Z2;Z5];

MZRa=Za*Za';     
ZE=Za*EG_';        
 
invMZRa=inv(MZRa); 
Xa=invMZRa*ZE;     
Eadc1=EG_- Xa'*Za;           
//____________________________  КОНЕЦ  МОДЕЛИ АЛГОРИТМА
   
stdEadc1=stdev(Eadc1);   
stdE1=stdev(EG_);   
E1_Eadc1_dB=20*log10(stdev(EG_)/stdev(Eadc1));

  a=1;
      
     
